package net.xxcl.kygl.mapper;

import java.util.List;
import java.util.Map;

import net.xxcl.kygl.model.ProjectForList;
import net.xxcl.kygl.model.ProjectForUser;
import net.xxcl.kygl.pojo.Criteria;
import net.xxcl.kygl.pojo.Project;
import net.xxcl.kygl.pojo.User;
import org.apache.ibatis.annotations.Param;

public interface ProjectMapper {
    /**
     * 根据条件查询记录总数
     */
    int countByExample(Criteria example);

    /**
     * 根据条件删除记录
     */
    int deleteByExample(Criteria example);

    /**
     * 根据主键删除记录
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 保存记录,不管记录里面的属性是否为空
     */
    int insert(Project record);

    /**
     * 保存属性不为空的记录
     */
    int insertSelective(Project record);

    /**
     * 根据条件查询记录集
     */
    List<Project> selectByExample(Criteria example);

    /**
     * 根据主键查询记录
     */
    Project selectByPrimaryKey(Integer id);

    /**
     * 根据条件更新属性不为空的记录
     */
    int updateByExampleSelective(@Param("record") Project record, @Param("example") Criteria example);

    /**
     * 根据条件更新记录
     */
    int updateByExample(@Param("record") Project record, @Param("example") Criteria example);

    /**
     * 根据主键更新属性不为空的记录
     */
    int updateByPrimaryKeySelective(Project record);

    /**
     * 根据主键更新记录
     */
    int updateByPrimaryKey(Project record);

    /**
     * 根据用户id查询记录
     */
    List<ProjectForUser> selectByUserId(Criteria example);

    /**
     * 根据用户id查询记录总数
     */
    int countByUserId(Criteria example);

    /**
     * 根据用户id查询记录
     */
    List<ProjectForList> selectList(Criteria example);

    /**
     * 根据用户id查询记录总数
     */
    int countList(Criteria example);

    /**
     * 查询课题有哪些参与人
     */
    List<Map> getUserByProjectId(Integer projectId);

    /**
     * 立项课题评审列表记录数
     */
    int countBySbpsyj(Criteria example);

    /**
     * 立项课题评审列表
     */
    List<Project> selectBySbpsyj(Criteria example);

    /**
     * 结题课题评审列表记录数
     */
    int countByJtpsyj(Criteria example);

    /**
     * 结题课题评审列表
     */
    List<Project> selectByJtpsyj(Criteria example);
}